package com.itheima.doudizhu2;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class PokerGame {




    //创建map集合存序号和牌的大小对应关系
    static HashMap<Integer,String> hm = new HashMap<>();

    //创建集合存序号
    static ArrayList<Integer> list = new ArrayList<>();

    //静态代码块，用一次（准备一副牌就够了）
    static {
        //准备牌
        //将花色和号码分别放在两个集合，用于遍历都得到每一张牌
        String[] color = {"♠", "♥", "♣", "♦"};
        String[] number = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};

        int num=1;
        //遍历
        for (String n : number) {
            for (String c : color) {
                //添加到map集合，大小和序号要对应起来
                hm.put(num,c+n);
                list.add(num);
                //添加一个序号加1
                num++;
            }
        }

        //再把大小王添加进去
        hm.put(num,"小王");
        list.add(num);
        num++;
        hm.put(num,"大王");
        list.add(num);
        //观察
        System.out.println(hm);//序号和牌的大小对应好了
        System.out.println(list);

    }

    public PokerGame(){
        //创建3个集合当成玩家用于存牌，还有底牌
        TreeSet<Integer> player1 = new TreeSet<>();
        TreeSet<Integer> player2 = new TreeSet<>();
        TreeSet<Integer> player3 = new TreeSet<>();
        TreeSet<Integer> diPai = new TreeSet<>();

        //玩家
        String p1Name = "张三";
        String p2Name = "李四";
        String p3Name = "王五";
        String dp = "底牌";

        //洗牌,对序号进行操作
        Collections.shuffle(list);

        //发牌,遍历序号，给每一个玩家发序号
        for (int i = 0; i < list.size(); i++) {
            //获取到每一个索引对应的序号
            int num = list.get(i);
            //先发底牌
            if(i<=2){
                diPai.add(num);
            }
            //再给每个玩家依次发牌
            if(i%3==0){
                player1.add(num);
            } else if (i%3==1) {
                player2.add(num);
            }else{
                player3.add(num);
            }
        }

        //看牌，现在要将具体的牌显示出来，要求根据序号找到牌
        extracted(p1Name,player1);
        extracted(p2Name,player2);
        extracted(p3Name,player3);
        extracted(dp,diPai);
    }

    //遍历每个玩家发到的序号，再通过Map集合找到
    private static void extracted(String name,TreeSet<Integer> player) {
        System.out.print(name+":");
        for (int num : player) {
            String pai = hm.get(num);
            System.out.print(pai+" ");
        }
        System.out.println();
    }
}
